//删除链表的倒数第k个节点，
// class Solution {
// public:
//     ListNode* removeNthFromEnd(ListNode* head, int n) {
//         ListNode* hhead=head;
//         int count=0;
//         while(head)
//         {
//             count++;
//             head=head->next;
//         }
//         head=hhead;
//         int num=count-n+1;//删除正数第num个
//         if(count==1&&num==1)return nullptr;
//         if(num==1)return hhead->next;
//         ListNode* prev=head;
//         while(head&&num)
//         {
//             num--;
//             if(num==0)
//             {
//                 head=head->next;
//                 prev->next=head;
//                 break;
//             }
//             prev=head;
//             head=head->next;
//         }
//         return hhead;
//     }
// };

class Solution {
public:
    ListNode* removeNthFromEnd(ListNode* head, int n) {
        ListNode*dummy=new ListNode(-1);
        dummy->next=head;
        int count=0;
        while(head)
        {
            count++;
            head=head->next;
        }
        ListNode*prev=dummy;
        for(int i=0;i<count-n;i++)prev=prev->next;
        prev->next=prev->next->next;
        return dummy->next;
    }
};
